const axios = require('axios');

// 测试配置
const BASE_URL = 'http://localhost:8001';
const TEST_USER_ID = 'TEST_USER_001';

// 测试满减订单创建
async function testCreateOrderWithMJ() {
  try {
    console.log('=== 测试创建满减订单 ===');
    
    // 模拟购物车商品
    const cartIds = [1, 2]; // 假设的购物车ID
    const mjBillNo = '7878612'; // 满减促销单号
    
    const response = await axios.post(`${BASE_URL}/app/order/info/createFromCart`, {
      cartIds: cartIds,
      remark: '测试满减订单',
      title: '满减测试订单',
      mjBillNo: mjBillNo
    }, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer test_token'
      }
    });

    console.log('满减订单创建成功:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('满减订单创建失败:');
    if (error.response) {
      console.error('状态码:', error.response.status);
      console.error('响应数据:', JSON.stringify(error.response.data, null, 2));
    } else {
      console.error('错误信息:', error.message);
    }
    return null;
  }
}

// 测试满减计算
async function testCalculateDiscount() {
  try {
    console.log('\n=== 测试满减计算 ===');
    
    const response = await axios.post(`${BASE_URL}/admin/goods/promoMj/calculateDiscount`, {
      billNo: '7878612',
      totalAmount: 150.00
    }, {
      headers: {
        'Content-Type': 'application/json'
      }
    });

    console.log('满减计算结果:', JSON.stringify(response.data, null, 2));
    
    // 验证计算逻辑：150元打98折，应该优惠3元，最终147元
    if (response.data && response.data.data) {
      const result = response.data.data;
      const expectedDiscount = 150 - (150 * 98 / 100); // 3元
      const expectedFinal = 150 - expectedDiscount; // 147元
      console.log(`期望优惠: ${expectedDiscount}元, 实际优惠: ${result.discount}元`);
      console.log(`期望最终价格: ${expectedFinal}元, 实际最终价格: ${result.finalAmount}元`);
      
      if (Math.abs(result.discount - expectedDiscount) < 0.01) {
        console.log('✅ 满减计算正确');
      } else {
        console.log('❌ 满减计算错误');
      }
    }
    
    return response.data;
  } catch (error) {
    console.error('满减计算失败:');
    if (error.response) {
      console.error('状态码:', error.response.status);
      console.error('响应数据:', JSON.stringify(error.response.data, null, 2));
    } else {
      console.error('错误信息:', error.message);
    }
    return null;
  }
}

// 测试满减条件查询
async function testGetDiscountConditions() {
  try {
    console.log('\n=== 测试满减条件查询 ===');
    
    const response = await axios.post(`${BASE_URL}/admin/goods/promoMj/getDiscountConditions`, {
      billNo: '7878612'
    }, {
      headers: {
        'Content-Type': 'application/json'
      }
    });

    console.log('满减条件:', JSON.stringify(response.data, null, 2));
    return response.data;
  } catch (error) {
    console.error('满减条件查询失败:');
    if (error.response) {
      console.error('状态码:', error.response.status);
      console.error('响应数据:', JSON.stringify(error.response.data, null, 2));
    } else {
      console.error('错误信息:', error.message);
    }
    return null;
  }
}

// 运行所有测试
async function runAllTests() {
  console.log('开始测试满减订单功能...\n');
  
  // 1. 测试满减条件查询
  await testGetDiscountConditions();
  
  // 2. 测试满减计算
  await testCalculateDiscount();
  
  // 3. 测试创建满减订单
  await testCreateOrderWithMJ();
  
  console.log('\n测试完成！');
}

// 执行测试
runAllTests().catch(console.error); 